<?php
namespace app\listener\behavior;

use think\facade\Config;
use think\facade\Env;

class ModuleInit
{
    public function handle()
    {
        // 设置mbstring字符编码
        mb_internal_encoding("UTF-8");

        $request = request();
        // 如果修改了index.php入口地址，则需要手动修改cdnurl的值
        $url = preg_replace("/\/(\w+)\.php$/i", '', $request->root());

        $tpl_replace_string = Config::get('view.tpl_replace_string');
        // 如果未设置__CDN__则自动匹配得出
        if (!$tpl_replace_string['__CDN__']) {
            $tpl_replace_string['__CDN__'] = $url;
        }

        // 如果未设置__PUBLIC__则自动匹配得出
        if (!$tpl_replace_string['__PUBLIC__']) {
            $tpl_replace_string['__PUBLIC__'] = $url . '/';
        }

        // 如果未设置__ROOT__则自动匹配得出
        if (!$tpl_replace_string['__ROOT__']) {
            $tpl_replace_string['__ROOT__'] = preg_replace("/\/public\/$/", '', $url . '/');
        }

        Config::set(['tpl_replace_string' => $tpl_replace_string], 'view');

        // 如果未设置cdnurl则自动匹配得出
        if (!Config::get('site.cdnurl')) {
            Config::set(['cdnurl' => $url], 'site');
        }

        // 如果未设置cdnurl则自动匹配得出
        if (!Config::get('upload.cdnurl')) {
            Config::set(['cdnurl' => $url], 'upload');
        }

        if (Env::get('app_debug')) {
            // 如果是调试模式将version置为当前的时间戳可避免缓存
            Config::set(['version' => time()], 'site');
            // 如果是开发模式那么将异常模板修改成官方的
            Config::set(['exception_tmpl' => app()->getThinkPath() . 'tpl/think_exception.tpl'], 'app');
        }

        // 如果是trace模式且Ajax的情况下关闭trace
        // if (Config::get('app_trace') && $request->isAjax()) {
        //     Config::set('app_trace', false);
        // }

        // 切换多语言
        // if (Config::get('lang.lang_switch_on')) {
        //     $lang = $request->get('lang', '');
        //     if (preg_match("/^([a-zA-Z\-_]{2,10})\$/i", $lang)) {
        //         \think\facade\Cookie::set('think_var', $lang);
        //     }
        // }
        // Form别名
        if (!class_exists('Form')) {
            class_alias('fast\\Form', 'Form');
        }
    }
}